﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProjectEulerSolutions
{
    /*
     * A number chain is created by continuously adding the square of the digits in a number to form a new number until it has been seen before.

For example,

44 → 32 → 13 → 10 → 1 → 1
85 → 89 → 145 → 42 → 20 → 4 → 16 → 37 → 58 → 89

Therefore any chain that arrives at 1 or 89 will become stuck in an endless loop. What is most amazing is that EVERY starting number will eventually arrive at 1 or 89.

How many starting numbers below ten million will arrive at 89?

     * */

    class Problem92 : IProblem
    {
        public string Calculate()
        {
            long count = 0;

            int limit = 10000000;



            for (int i = 2; i < limit; i++)
            {
                int current = i;

                while (!(current == 1 || current == 89))
                {
                    var digits = CommonFunctions.GetDigits(current);
                    current = 0;

                    foreach (var digit in digits)
                        current += digit * digit;
                }

                if (current == 89)
                    count++;
            }

            return count.ToString();
        }
    }
}
